#version 460 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;

uniform mat4 mModel;
uniform mat4 mView;
uniform mat4 mProjection;

out vec3 Normal;
out vec3 FragPos;

void main()
{
    gl_Position = mProjection * mView * mModel * vec4(aPos, 1.0);
    //我们需要片段位置，我们在世界空间中进行所有的光照计算，因此我们需要
    //一个在世界空间中的顶点位置。
    FragPos = vec3(mView * vec4(aPos, 1.0));
    //片段着色器里的计算都是在世界空间坐标中进行的
    //所以希望把法向量也转换为世界空间坐标
    //法线矩阵被定义为「模型矩阵左上角的逆矩阵的转置矩阵」
    Normal = mat3(transpose(inverse(mModel))) * aNormal;
}